package com.example.demo.until;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Component
public class JwtUtil {
    // 密钥，用于签名JWT，需要妥善保管，实际应用中应配置在更安全的地方，如配置文件中
    private static final String SECRET_KEY = "your_secret_key";
    // Token过期时间，这里设置为1小时，可根据实际需求调整，单位为毫秒
    private static final long EXPIRATION_TIME = 3600 * 1000;

    // 生成JWT的方法
    public static String generateToken(String subject) {
        Map<String, Object> claims = new HashMap<>();
        return Jwts.builder()
                .setClaims(claims)
                .setSubject(subject)
                .setIssuedAt(new Date())
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .compact();
    }

    // 解析JWT并获取其中的主体内容（如用户ID等信息）的方法
    public static String getSubjectFromToken(String token) {
        Claims claims = Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token).getBody();
        return claims.getSubject();
    }
}